纯函数
独立存在,不依附于任何实体,没有接收者
1 | package helper |
方法
与函数不一样的,在定义的时候,会与接收者绑定在一起。
1 | type human struct { |
与函数对比,应该可以看到,在函数func声明之前增加的(h human),这个就是接收者,每一个humman绑定了该方法,类似面向对象里的成员函数。
值接收&指针接收
- 值接收者,在调用的时候是值接收者的一个副本,所以对该值的任何修改,不会影响原来的类型变量。
- 指针接收者传递的是一个指向原值指针的副本,所以修改时,同时也会影响原来类型变量的值。
1 | // 值接收,不能修改原值 |
多值返回
Go的函数方法支持多值返回,例如标准库中,很多都是返回两个值,一个是返回值,一个是出错时的错误信息,这就是我们经常看到下面这段代码的原因。
1 | if err != nil { |